/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dca.sistemascontrole.malhadecontrole;

import dca.sistemascontrole.domain.VariaveisDeControle;
import dca.sistemascontrole.util.ControleConstantes;

/**
 *
 * @author Rafael
 */
public class ControladorP extends MalhaFechada {

    private double up;

    public ControladorP(double setpoint, double kpe) {
        super(setpoint);
        this.kp = kpe;
    }

    @Override
    public int getTipo() {
        return P;
    }

    @Override
    protected VariaveisDeControle getNextValue(long t, double nivelTanqueSuperior, double nivelTanqueInfeior) {
        double erro;
        double pv; 
        
        if (ControleConstantes.PV_IS_TANQUE_SUPERIOR) {
            pv = nivelTanqueSuperior;
        } else {
            pv = nivelTanqueInfeior;
        }

        erro = variaveisDeControle.getSetPoint() - pv;
        up = kp * erro;

        variaveisDeControle.setU(up);
        variaveisDeControle.setUp(up);
        variaveisDeControle.setErro(erro);
        return variaveisDeControle;
    }
}
